///////////////////////////////////////////////////////////////////////////////
// File:        RealmList.hpp
// Author:      671643387@qq.com
// Description: 
///////////////////////////////////////////////////////////////////////////////

#if !defined(REALMD_REALMLIST_HPP_)
#define REALMD_REALMLIST_HPP_

#if defined(_MSC_VER) && (_MSC_VER >= 1200)
# pragma once
#endif

#include <cstdint>
#include <string>
#include <vector>
#include "Common.hpp"
#include "util/Util.hpp"

///////////////////////////////////////////////////////////////////////////////
struct Realm
{
    uint32_t        id;
    std::string     name;
    std::string     address;
    uint8_t         icon;
    eRealmFlags     realmflags;
    uint8_t         timezone;
    float           populationLevel;
};

///////////////////////////////////////////////////////////////////////////////
class RealmList
{
public:
    ///////////////////////////////////////////////////////////////////////////
    typedef std::vector<Realm>      RealmArray;
    typedef RealmArray::iterator    iterator;
    typedef RealmArray::size_type   size_type;

public:
    ///////////////////////////////////////////////////////////////////////////
    RealmList(void);
    ~RealmList(void);

    ///////////////////////////////////////////////////////////////////////////
    void Update(void);
    size_type GetRealmCount(void) { return realms_.size(); }
    iterator Begin(void) { return realms_.begin(); }
    iterator End(void) { return realms_.end(); }

private:
    ///////////////////////////////////////////////////////////////////////////
    TIME_T      updateTime_;
    RealmArray  realms_;
};

#endif //REALMD_REALMLIST_HPP_
